# document_loader_value_demo.py
import os
from langchain.document_loaders import TextLoader, PyPDFLoader
from langchain.docstore.document import Document


def demonstrate_loader_value():
    """演示文档加载器的核心价值"""

    print("🎯 文档加载器价值演示")
    print("=" * 50)

    # 1. 统一接口处理不同格式
    print("1️⃣ 统一接口演示：")

    # 创建示例文档
    sample_resume_text = """
    张明的个人简历

    基本信息：
    - 姓名：张明
    - 年龄：28岁
    - 电话：13800138000

    工作经历：
    2020-2023 阿里巴巴 Java开发工程师
    - 负责核心业务系统开发
    - 熟练使用Spring Boot框架
    - 有微服务架构经验

    技能：Java, Spring Boot, MySQL, Redis
    """

    # 保存为文本文件
    # with open("sample_resume.txt", "w", encoding="utf-8") as f:
    #     f.write(sample_resume_text)

    # 使用文档加载器
    loader = TextLoader("sample_resume.txt", encoding="utf-8")
    documents = loader.load()

    print(f"   加载的文档数量：{len(documents)}")
    print(f"   文档类型：{type(documents[0])}")
    print(f"   文档内容长度：{len(documents[0].page_content)}字符")
    print(f"   文档元数据：{documents[0].metadata}")
    #print(f"   文档的内容：{documents[0].page_content[:100]}...")

    # 2. 元数据自动提取
    print("\n2️⃣ 元数据提取演示：")

    doc = documents[0]
    print("   自动提取的元数据：")
    for key, value in doc.metadata.items():
        print(f"     {key}: {value}")

    # 3. 结构化文档对象
    print("\n3️⃣ 文档对象结构：")

    print(f"   文档内容片段：{doc.page_content[:100]}...")
    print(f"   文档来源：{doc.metadata.get('source', '未知')}")

    # 展示Document对象的优势
    print("\n   Document对象的优势：")
    print("   ✅ 内容和元数据分离")
    print("   ✅ 统一的数据结构")
    print("   ✅ 便于后续处理和分析")
    print("   ✅ 支持链式操作")

    # 4. 批量处理能力
    print("\n4️⃣ 批量处理演示：")

    # 创建多个示例文件
    resume_data = [
        ("resume_java.txt", "Java开发工程师，5年经验，熟悉Spring Boot"),
        ("resume_python.txt", "Python开发工程师，3年经验，擅长Django框架"),
        ("resume_frontend.txt", "前端开发工程师，4年经验，精通React和Vue")
    ]

    all_documents = []
    for filename, content in resume_data:
        with open(filename, "w", encoding="utf-8") as f:
            f.write(content)

        loader = TextLoader(filename, encoding="utf-8")
        docs = loader.load()
        all_documents.extend(docs)

    print(f"   批量加载文档数量：{len(all_documents)}")
    print("   批量处理结果：")
    for i, doc in enumerate(all_documents, 1):
        source = doc.metadata.get('source', '未知').split('/')[-1]
        content_preview = doc.page_content[:30].replace('\n', ' ')
        print(f"     {i}. {source}: {content_preview}...")

    # 清理临时文件
    cleanup_files = ["sample_resume.txt"] + [name for name, _ in resume_data]
    for file in cleanup_files:
        try:
            os.remove(file)
        except:
            pass


# 运行演示
demonstrate_loader_value()
